%!TEX root = tesis-header.tex

\section{OGRE en un Cluster/Cumulo Gráfico y con Despliegue Estéreo-Gráfico}
\label{ogrecluster}
Entre los experimentos que se hizo para desarrollar aplicaciones para cumulo gráfico, en la Dirección General de Servicios de Computo Académico, se tenia la re-implementación del ciclo de dibujo de OGRE para despliegue estéreo-gráfico. Ya existía un antecedente en el departamento de Realidad Virtual pero fue implementado en una versión anterior de OGRE (para el cual ya no estaba apto la tesis). Cayo la responsabilidad de actualizar tal implementación a uno de los becarios del departamento, quien casualmente es miembro de esta tesis.

Se intento atacar el problema a través de las soluciones existentes para cúmulos gráficos: Chromium y Xdmx para X/OpenGL distribuido; y Equalizer. Ambas presentaban problemas para atacar el problema de despliegue estéreo-gráfico.:

Chromium es una re-implementación de OpenGL. De manera simple se ve como una capa intermedia entre la aplicación y la librería libGL. Para poder capturar comandos de OpenGL y distribuirlos a los diferentes nodos en un cluster, engaña a la aplicación - por eso la necesidad de re-implementar OpenGL. Al final distribuye la tarea de dibujo a los diferentes nodos según la configuración que se hizo.

En el proceso de adaptar OGRE a usarse en Chromium, se dio cuenta de la inestabilidad de OGRE en OpenGL - Se veía bien mientras se usaba un solo monitor de cualquier tamaño, pero no tan bien cuando se esparcían los datos entre diferentes framebuffers. Agregase la complejidad de forzar un modo estéreo-gráfico por medio del mismo Chromium y tenias resultados muy desagradables y a veces aleatorio.

Un tutorial de como correr OGRE en un cluster o cúmulo gráfico y sus resultados se encuentra en el siguiente wiki de OGRE (escrito por el mismo autor de este pasaje). Solamente se encuentra en ingles por el momento.

\url{http://www.ogre3d.org/wiki/index.php/Ogre_on_a_Cluster}

Equalizer se presenta como un API poco invasivo y hecho para aplicaciones en cúmulos gráficos. Aquí la única problema consistía en el tener que adaptar al  programa a usarlo. Estaba pensado para hacer aplicaciones partiendo de OpenGL o GLUT, no tanto un API encima de estos. Aun así, un estudiante de la universidad de Beijing logro hacer un ejemplo combinando OGRE y Equalizer. Resulto que su implementación no siempre funcionaba y no siempre se podía compilar. Era una solución que ofrecía muchas ventajas, incluso la adaptación para despliegue estéreo-gráfico, pero a su vez representaba una considerable inversión de tiempo.

Tiempo después se encontró una solución (a medias) que permitía el despliegue impecable de gráficos 3D a cualquier despliegue X o VNC: VirtualGL. En teoría soportaba despliegue estéreo-gráfico, pero solo si la aplicación lo tiene. Había un solo problema: Todo el calculo se generaba en el nodo maestro. VirtualGL fue diseñado pensando en el `Rendering remoto' (esto es, se dibujaba en el servidor y se mandaba una imagen jpeg por la red 60 o 120 veces por segundo) y no precisamente para salas de Realidad Virtual. No se tenia tanta potencia en un solo nodo, para cuestiones de estéreo y a la resolución de la sala Ixtli (lo cual llegaba a 3520x1024), pero si para una imagen sin estéreo (aun así, contando con una ancho de banda de 10Gb/s, los resultados eran mediocres). A 11 (a veces 25) cuadros por segundo, sin estéreo-grafía y sin rapidez de interacción (se trababa el teclado a veces),  VirtualGL resulto ser una opción poco viable.

Para lo anterior se tuvo que actualizar, oficialmente, el código para despliegue en estéreo de OGRE, el cual tuvo éxito pero no funcionaba con VirtualGL (curiosamente si con Chromium). A pesar del fracaso de usar VirtualGL, se agregaron nuevas soluciones a diferentes problemas (como mostrar GoogleEarth en el cluster) y se amplio el engine de OGRE para usarse en ambientes Virtuales (Una exitosa colaboración entre la comunidad de OGRE y el Departamento de Realidad Virtual). En particular el proyecto sigue en camino, ahora con énfasis en su uso con Equalizer. Con respecto al juego de lia fael - hace posible la creación de una versión del juego para ambientes virtuales.

El parche, a la hora de escribir, para OGRE 1.49 se encuentra en la siguiente pagina:

\url{http://imagen.ixtli.unam.mx/~jp/dist/Ogre_1.49_StereoGL_Patch.tar.bz2}
